import { Plugin } from 'vite';

/**
 * Hook 的执行顺序测试
 */
export function testHookPlugin(): Plugin {
  return {
    name: 'test-hook-plugin',

    // Vite 读取配置文件后，触发该 Hook
    config(config, { command }) {
      console.log('Vite独有钩子：config');
    },

    // 解析完配置之后，会触发该 Hook
    configResolved(config) {
      console.log('Vite独有钩子：configResolved');
    },

    options(options) {
      console.log('通用钩子：options');
      return options;
    },

    // 开发阶段才会触发该 Hook，一般用来添加自定义服务器中间件
    configureServer(server) {
      console.log('Vite独有钩子：configureServer');

      // setTimeout(() => {
      //   // 手动退出进程
      //   process.kill(process.pid, 'SIGINT');
      // }, 8000);
    },

    buildStart() {
      console.log('通用钩子：buildStart');
    },

    buildEnd() {
      console.log('通用钩子：buildEnd');
    },

    closeBundle() {
      console.log('通用钩子：closeBundle');
    },
  };
}

export default function (): Plugin {
  return {
    name: 'xxx',

    // build：生产环境；serve：开发环境
    apply: 'build',
    // apply(config, { command }) {
    //   // 只用于非 SSR 情况下的生产环境构建
    //   return command === 'build' && !config.build.ssr
    // }

    // 可以设置 post | pre
    enforce: 'post',
  };
}
